var server = "https://fbsmile.googlecode.com/git/server/",
    handler = "http://fbsmile.local/handler.php?request=",
    duration = function (t)
    {
        var now = new Date();
        return parseInt((now.getTime() - t) / 1000);
    },
    cacheEnabled = false,
    cacheTimeout = 24 * 60 * 60,

    // Cache dũ liệu nhận từ server
    cache = (function ()
    {
        var methods = {};

        methods.get = function ()
        {
            // Gửi Ajax đến server để nhận dữ liệu
            var requestData = function ()
            {
                var xhr = new XMLHttpRequest();
                xhr.open('GET', handler + "list", false);
                xhr.onreadystatechange = function ()
                {
                    if (xhr.readyState == 4)
                    {
                        localStorage.data = xhr.response;
                        localStorage.lastUpdated = (new Date()).getTime();
                    }
                };
                xhr.send(null);
            };

            // Kiểm tra hợp lệ dữ liệu (có cần gửi Ajax để nhận dữ liệu mới chưa)
            var validateCache = !cacheEnabled ||
                (cacheEnabled && !localStorage.data) ||
                (cacheEnabled && localStorage.data && duration(localStorage.lastUpdated) > cacheTimeout);
            if (validateCache)
            {
                requestData();
            }
            else
            {
                console.log("load from cache");
            }

            return localStorage.data;
        };

        return methods;
    }());

chrome.extension.onMessage.addListener(
    function (request, sender, sendResponse)
    {
        if (request.cmd == "list")
        {
            sendResponse(cache.get());
        }
        else if (request.cmd = "server")
        {
            sendResponse(server);
        }
        else
        {
            sendResponse({code: -1, data: "CMD not found!"});
        }

        return true;
    }
);